<?php

require_once 'defs/Constants.php';
require_once(FILE_CLASS_STATTOTAALKEURINGEN);
require_once(FILE_CLASS_STATSTATUS);

/*
  --- PROJECT COFELY 2011, TOTAAL ACTUEEL --
  @author: Leander Molegraaf
  @category: statistieken
  @name StatTotaalActueel

  @uses StatTotaalAantalKeuring (object)
  @uses StatStatus (object)
  @see StatStatistiekenRapport (klasse dit dit bestand gebruikt)

  @version 1.2.2
  datum: 26-04-2012

  BESCHRIJVING:
  Deze klasse zorgt voor het totaal actueel veld in de statistiek

  WERKING:
  Deze klasse wordt aangeroepen met 2 waardes:
  - het type statistiek(TBM/WPI)
  - de databaseklassen

  OPMERKINGEN:
  1.1 De klasse verwacht dat de databaseclass al ingevuld is.

  CHANGELOG:
  v1.2:
  - enkele cosmetische wijzigingen in de code
  - documentatie (inline/top) verbeterd

  v1.2.1:
  - bestandsnamen van de statistiek beginnen allemaal met Stat
  - calculatePercentage bug gefixed

  v1.2.2:
  - alle getters/setters geimplementeerd
  - ontwerp aangepast
 */

class StatTotaalActueel {

    private $statistiekSoort; //String
    private $aantalOperationeel, $percentage1, $percentage2, $percentage3, $aantalGevolgd, $aantalGemist, $aantalGemistMetReden; //int
    private $statistiekDB; //DB klasse
    public $TotaalAantalKeuring1, $TotaalAantalKeuring2, $TotaalAantalKeuring3, $Status; //klassen

    /**
     * @param String $statistiekSoort welke type statistiek dit is (WPI/TBM)
     * @param StatStatistiekenRapport $statistiekDB
     * @since Version 1.0
     * @uses StatStatistiekenRapport
     */

    public function __construct($statistiekSoort, $statistiekDB) { //string, statistiek databaseklasse
        $this->setStatistiekSoort($statistiekSoort);
        $this->statistiekDB = $statistiekDB;
        $this->fillClass();
    }

    public function getStatistiekSoort() {
        return $this->statistiekSoort;
    }

    public function setStatistiekSoort($statistiekSoort) {
        $this->statistiekSoort = $statistiekSoort;
    }

    public function getAantalOperationeel() {
        return $this->aantalOperationeel;
    }

    public function setAantalOperationeel($aantalOperationeel) {
        $this->aantalOperationeel = $aantalOperationeel;
    }

    public function getPercentage1() {
        return $this->percentage1;
    }

    public function setPercentage1($percentage1) {
        $this->percentage1 = $percentage1;
    }

    public function getPercentage2() {
        return $this->percentage2;
    }

    public function setPercentage2($percentage2) {
        $this->percentage2 = $percentage2;
    }

    public function getPercentage3() {
        return $this->percentage3;
    }

    public function setPercentage3($percentage3) {
        $this->percentage3 = $percentage3;
    }

    public function getAantalGevolgd() {
        return $this->aantalGevolgd;
    }

    public function setAantalGevolgd($aantalGevolgd) {
        $this->aantalGevolgd = $aantalGevolgd;
    }

    public function getAantalGemist() {
        return $this->aantalGemist;
    }

    public function setAantalGemist($aantalGemist) {
        $this->aantalGemist = $aantalGemist;
    }

    public function getAantalGemistMetReden() {
        return $this->aantalGemistMetReden;
    }

    public function setAantalGemistMetReden($aantalGemistMetReden) {
        $this->aantalGemistMetReden = $aantalGemistMetReden;
    }

    /**
     * vult de  totaalActueel klasse met gegevens uit de databaseklasse
     * @name fillClass
     * @return void
     * @since Version 1.0
     * @uses StatTotaalAantalKeuring
     * @uses StatStatus
     */
    private function fillClass() {
        $totaal = 0;
        $PC = $this->statistiekDB->getLijstMetBedrijfsonderdelen();

        for ($loop = 0; $loop < count($PC); $loop++) {
            $this->aantalGevolgd += $PC[$loop]->getAantalGevolgd();
            $this->aantalGemist += $PC[$loop]->getAantalGemist();
            $this->aantalGemistMetReden += $PC[$loop]->getAantalGemistMetReden();
            $totaal += $PC[$loop]->getAantalGemist() + $PC[$loop]->getAantalGemistMetReden() + $PC[$loop]->getAantalGevolgd();

            if ($this->statistiekSoort == STAT_WERKPLEKINSPECTIE) {
                $this->aantalOperationeel += $PC[$loop]->getWPIPlichtig();
            } else if ($this->statistiekSoort == STAT_TOOLBOXMEETING) {
                $this->aantalOperationeel += $PC[$loop]->getAantalOperationeel();
            } else {
                echo(STAT_ERROR_GEEN_STATSOORT);
            }
        }
        $this->TotaalAantalKeuring1 = new StatTotaalAantalKeuring($totaal, $this->getAantalGevolgd());
        $this->percentage1 = $this->TotaalAantalKeuring1->calculatePercentage($this->getAantalGevolgd(), $totaal);

        $this->TotaalAantalKeuring2 = new StatTotaalAantalKeuring($totaal, $this->getAantalGemist());
        $this->percentage2 = $this->TotaalAantalKeuring2->calculatePercentage($this->getAantalGemist(), $totaal);

        $this->TotaalAantalKeuring3 = new StatTotaalAantalKeuring($totaal, $this->getAantalGemistMetReden());
        $this->percentage3 = $this->TotaalAantalKeuring3->calculatePercentage($this->getAantalGemistMetReden(), $totaal);

        $this->Status = new StatStatus($this->percentage1, $this->percentage2, $this->percentage3);
    }

}

?>